﻿# -*- coding: utf-8 -*-
#!/usr/bin/python

#------------------------------------------------------------------------

## @package     prof
## \brief   	gestion du type abstrait "prof"
## \author  	Pierrick Troadec et Kawtar Hssain
## \date        28/12/2011
## \version     1.2
## \copyright   license BSD

#------------------------------------------------------------------------

#    Importations
#  -----------------

import pyglet
from pyglet.gl import *

import primitives as prims
from constante import *

import piece as _piece


#   Fonctions
#  -----------------

## Constructeur du type abstrait "prof"
##@param position   : position du professeur
##@param question   : que doit poser le professeur
##\note patern      : "Quelle est la couleur du cheval blanc d'Henri IV?\n\n    1- Blanc\n    2- Noir\n    3- Je vous en pose des question moi!"
##@param reponse    : numéro de la bonne reponse
##@param finP       : fin de dialogue en cas de bonne reponse
##@param finM       : fin de dialogue en cas de mauvaise reponse
##@param texture    : texture du professeur
##@param nom        : nom du professeur (inutilisé)
##@return prof      : professeur initialisé
def creerProf(position = (0,0,0), question = "" , reponse = 1, finP = "", finM = "" ,texture = None, nom = ""):
    
    prof = {}
    prof["nom"] = nom
    prof["position"] = position
    prof["angle"] = 0
    prof["question"] = question.decode('utf-8')
    prof["reponse"] = reponse
    prof["finP"] = finP
    prof["finM"] = finM
    prof["texture"] = texture
    prof["collision"]= (prof["position"], 3)
    prof["pose_une_question"] = False
    prof["donne_sa_reponse"] = False
    prof["fin"] = False
    
    return prof
    
## Affiche un professeur
##@param prof : professeur à afficher   
def dessinerProf(prof):

    prims.afficherRectangle(prof["position"], prof["angle"], (1.5, 2), prof["texture"])

            
## Modifier l'orientation du professeur
##@param prof : professeur à tourner
##@param da   : angle selon lequel tourner le professeur
def tourner(prof, da):
    
    prof["angle"] += da

##  Détection de collisions contre un professeur en vu d'amorçage du dialogue
##@param x          : position en abscisse du joueur
##@param z          : position en ordonnée du joueur
##@param batiment   : liste des pièces du bâtiment
##@param A          : état de la touche "a" du clavier 
def collisionProf(x, z, batiment, A):

    if A:
        num = _piece.numPiece(x,z,batiment)
        if num != 99:
            prof = batiment[num]["prof"]
        
        
            d2 = (x-prof["collision"][0][0])*(x-prof["collision"][0][0]) + (z-prof["collision"][0][2])*(z-prof["collision"][0][2])
        
            if not(d2 > prof["collision"][1]*prof["collision"][1]) and not prof["fin"]:
                prof["pose_une_question"]  = True
                
        
